home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 021-030 / amok30 / m2maker / defmaker.projekt / txt / moduletool.mod < prev    next >
Text File  |  1993-11-04  |  10KB  |  246 lines

  1. (**********************************************************************
  2.  
  3.     :Program.    ModuleTool
  4.     :Contents.   Erzeugt Def-Module aus Imps
  5.     :Author.     Thomas Stolze
  6.     :Copyright.  ShareWare
  7.     :Language.   Modula-2
  8.     :Translator. M2Amiga AMSoft V3.2
  9.     :Imports.    DirectorySupport
  10.     :Imports.    IntuitionSupport
  11.     :History.    V1.0 Thomas Stolze 22-Oct-89
  12.  
  13. **********************************************************************)
  14.  
  15. (******************************************************************************
  16. *                                                                             *
  17. *    Programmname:  ModuleTool                                                *
  18. *                                                                             *
  19. *    Stand:         22.10.89                            Uhrzeit:  21:05:01    *
  20. *                                                                             *
  21. *    Bearbeitet mit dem MODULETool V1.0         (©) by  Thomas Stolze 1989    *
  22. *                                                                             *
  23. ******************************************************************************)
  24.  
  25. (* $R- *) (* $V- *) (* $S- *) (* $N- *) (* $F- *)
  26. MODULE ModuleTool;
  27.  
  28. FROM SYSTEM           IMPORT ADDRESS,ADR;
  29. FROM Arts             IMPORT Assert,Terminate,TermProcedure;
  30. FROM Arguments        IMPORT GetArg,NumArgs;
  31. FROM Intuition        IMPORT ActivateGadget,ActivationFlags,ActivationFlagSet,
  32.                              AddGadget,boolGadget,Border,BorderPtr,CloseWindow,
  33.                              Gadget,GadgetFlags,GadgetFlagSet,GadgetPtr,
  34.                              IDCMPFlags,IDCMPFlagSet,IntuiMessagePtr,IntuiText,
  35.                              IntuiTextPtr,Menu,MenuItem,MenuItemFlags,
  36.                              MenuItemFlagSet,MenuPtr,NewWindow,OpenWindow,
  37.                              RefreshGadgets,ScreenFlags,ScreenFlagSet,
  38.                              SetMenuStrip,strGadget,StringInfo,WindowFlags,
  39.                              WindowFlagSet,WindowPtr;
  40. FROM Exec             IMPORT GetMsg,ReplyMsg,WaitPort;
  41. FROM Graphics         IMPORT jam1,jam2;
  42. FROM DefMaker         IMPORT InfoTabelle,MakeModule,PrintString;
  43. FROM IntuitionSupport IMPORT SetBorder,SetBorderKoord,SetGadget,SetInfo,
  44.                              SetIText,SetMenu,SetMenuItem,SetWindow;
  45. FROM DirectorySupport IMPORT Block,Frame;
  46.  
  47.  
  48. CONST fensterBreite   = 640;
  49.       fensterHoehe    = 78;
  50.       erstePixelReihe = 122;
  51.       programmName    = "MODULETool V1.1";
  52.  
  53. VAR gadget        : ARRAY [0..10] OF Gadget;
  54.     MenuItemFeld  : ARRAY [0..3] OF MenuItem;
  55.     borderKoord   : ARRAY [0..6],[0..9] OF INTEGER;
  56.     text          : ARRAY [0..12] OF IntuiText;
  57.     border        : ARRAY [0..6] OF Border;
  58.     programmname  : ARRAY [0..1],[0..80] OF CHAR;
  59.     menustrip     : Menu;
  60.     menustripPtr  : MenuPtr;
  61.     gadgetptr     : GadgetPtr;
  62.     strInfo       : StringInfo;
  63.     window        : WindowPtr;
  64.     IntuiMsg      : IntuiMessagePtr;
  65.     class         : IDCMPFlagSet;
  66.     adr           : ADDRESS;
  67.     info          : InfoTabelle;
  68.     len,numargs   : INTEGER;
  69.  
  70. PROCEDURE InitDefMaker;
  71. VAR newWind  : NewWindow;
  72.     i,pos    : INTEGER;
  73.  
  74.   PROCEDURE InitGadgets;
  75.   VAR ptr : BorderPtr;
  76.       txt : IntuiTextPtr;
  77.   BEGIN
  78.     txt:=SetIText(text[3],ADR("aussortieren"),1,2,1,2,jam2);
  79.     txt:=SetIText(text[4],ADR(" DefMod"),1,2,5,2,jam2);
  80.     txt:=SetIText(text[5],ADR("Backup"),1,2,13,2,jam2);
  81.     txt:=SetIText(text[6],ADR("OK"),1,2,32,2,jam2);
  82.     txt:=SetIText(text[7],ADR("CANCEL"),1,2,16,2,jam2);
  83.     txt:=SetIText(text[8],ADR("Leerzeile"),1,2,1,2,jam2);
  84.     txt:=SetIText(text[9],ADR("  Speed"),1,2,1,2,jam2);
  85.     txt:=SetIText(text[10],ADR("   Kopf"),1,2,1,2,jam2);
  86.     txt:=SetIText(text[11],ADR("  Block"),1,2,5,2,jam2);
  87.  
  88.     SetInfo(strInfo,ADR(programmname[0]),ADR(programmname[1]),0,64,0);
  89.  
  90.     SetGadget(gadget[0],15,17,80,11,GadgetFlagSet{},
  91.               ActivationFlagSet{gadgImmediate,relVerify,toggleSelect},
  92.               boolGadget,ADR(border[0]),ADR(text[9]),NIL,0);
  93.     SetGadget(gadget[1],105,17,80,11,GadgetFlagSet{selected},
  94.               ActivationFlagSet{gadgImmediate,relVerify,toggleSelect},
  95.               boolGadget,ADR(border[0]),ADR(text[10]),NIL,1);
  96.     SetGadget(gadget[2],195,17,80,11,GadgetFlagSet{},
  97.               ActivationFlagSet{gadgImmediate,relVerify,toggleSelect},
  98.               boolGadget,ADR(border[0]),ADR(text[11]),NIL,2);
  99.     SetGadget(gadget[3],285,17,98,11,GadgetFlagSet{selected},
  100.               ActivationFlagSet{gadgImmediate,relVerify,toggleSelect},
  101.               boolGadget,ADR(border[2]),ADR(text[3]),NIL,3);
  102.     SetGadget(gadget[4],551,17,75,11,GadgetFlagSet{},
  103.               ActivationFlagSet{gadgImmediate,relVerify,toggleSelect},
  104.               boolGadget,ADR(border[3]),ADR(text[4]),NIL,4);
  105.     SetGadget(gadget[5],477,17,64,11,GadgetFlagSet{},
  106.               ActivationFlagSet{gadgImmediate,relVerify,toggleSelect},
  107.               boolGadget,ADR(border[4]),ADR(text[5]),NIL,5);
  108.     SetGadget(gadget[6],15,60,80,11,GadgetFlagSet{},
  109.               ActivationFlagSet{gadgImmediate,relVerify},
  110.               boolGadget,ADR(border[0]),ADR(text[6]),NIL,6);
  111.     SetGadget(gadget[7],548,60,80,11,GadgetFlagSet{},
  112.               ActivationFlagSet{gadgImmediate,relVerify},
  113.               boolGadget,ADR(border[0]),ADR(text[7]),NIL,7);
  114.     SetGadget(gadget[8],393,17,74,11,GadgetFlagSet{selected},
  115.               ActivationFlagSet{gadgImmediate,relVerify,toggleSelect},
  116.               boolGadget,ADR(border[5]),ADR(text[8]),NIL,8);
  117.     SetGadget(gadget[9],120,32,406,8,GadgetFlagSet{},
  118.               ActivationFlagSet{gadgImmediate,relVerify},
  119.               strGadget,ADR(border[6]),NIL,ADR(strInfo),9);
  120.  
  121.     SetBorderKoord(borderKoord[0],gadget[0]);
  122.     SetBorderKoord(borderKoord[1],gadget[6]);
  123.     SetBorderKoord(borderKoord[2],gadget[3]);
  124.     SetBorderKoord(borderKoord[3],gadget[4]);
  125.     SetBorderKoord(borderKoord[4],gadget[5]);
  126.     SetBorderKoord(borderKoord[5],gadget[8]);
  127.     SetBorderKoord(borderKoord[6],gadget[9]);
  128.  
  129.     ptr:=SetBorder(border[0],-1,-1,1,0,5,jam2,ADR(borderKoord[0]));
  130.     ptr:=SetBorder(border[1],-1,-1,1,0,5,jam2,ADR(borderKoord[1]));
  131.     ptr:=SetBorder(border[2],-1,-1,1,0,5,jam2,ADR(borderKoord[2]));
  132.     ptr:=SetBorder(border[3],-1,-1,1,0,5,jam2,ADR(borderKoord[3]));
  133.     ptr:=SetBorder(border[4],-1,-1,1,0,5,jam2,ADR(borderKoord[4]));
  134.     ptr:=SetBorder(border[5],-1,-1,1,0,5,jam2,ADR(borderKoord[5]));
  135.     ptr:=SetBorder(border[6],-1,-1,1,0,5,jam2,ADR(borderKoord[6]));
  136.  
  137.   END InitGadgets;
  138.  
  139.   PROCEDURE InitMenus;
  140.   VAR ptr : IntuiTextPtr;
  141.   BEGIN
  142.     ptr:=SetIText(text[0],ADR("  [& => AND]"),0,1,17,2,jam1);
  143.     ptr:=SetIText(text[1],ADR("  [~ => NOT]"),0,1,17,2,jam1);
  144.     ptr:=SetIText(text[2],ADR("  [# =>  <>]"),0,1,17,2,jam1);
  145.  
  146.     menustripPtr:=SetMenu(menustrip, 28,0,84,0,ADR(" Projekt"));
  147.  
  148.     menustripPtr^.firstItem:=SetMenuItem(MenuItemFeld[0],3,0,127,11,
  149.                  MenuItemFlagSet{highComp,itemText,itemEnabled,menuToggle,
  150.                                 checkIt,checked},
  151.                  ADR(text[0]),NIL,00C);
  152.     MenuItemFeld[0].nextItem:=SetMenuItem(MenuItemFeld[1],3,12,127,11,
  153.                  MenuItemFlagSet{highComp,itemText,itemEnabled,menuToggle,
  154.                                  checkIt,checked},
  155.                  ADR(text[1]),NIL,00C);
  156.     MenuItemFeld[1].nextItem:=SetMenuItem(MenuItemFeld[2],3,24,127,11,
  157.                  MenuItemFlagSet{highComp,itemText,itemEnabled,menuToggle,
  158.                                  checkIt},
  159.                  ADR(text[2]),NIL,00C);
  160.   END InitMenus;
  161.  
  162. BEGIN
  163.   InitMenus; InitGadgets;
  164.   SetWindow(newWind,0,erstePixelReihe,fensterBreite,fensterHoehe,0,1,
  165.             IDCMPFlagSet{closeWindow,gadgetUp},
  166.             WindowFlagSet{windowDrag,windowDepth,windowActive,activate,
  167.                           windowClose,windowRefresh},
  168.             ADR(programmName),NIL,NIL,0,0,0,0,
  169.             ScreenFlagSet{wbenchScreen});
  170.   window:=OpenWindow(newWind);
  171.   Assert(window # NIL,ADR("Fenster nicht geöffnet"));
  172.   Assert(SetMenuStrip(window,menustripPtr) = TRUE,ADR("Menu Fehler"));
  173.   Block(window^.rPort,2,2,14,fensterBreite-2,fensterHoehe-2);
  174.  
  175.   FOR i:=0 TO 9 DO
  176.       pos:=AddGadget(window,ADR(gadget[i]),-1);
  177.   END;
  178.   RefreshGadgets(window^.firstGadget,window,NIL);
  179.  
  180.   Frame(window^.rPort,3,3,11,fensterBreite-3,fensterHoehe-2,2);
  181.   Frame(window^.rPort,3,120,43,526,fensterHoehe-7,2);
  182.   Block(window^.rPort,0,124,45,522,fensterHoehe-9);
  183. END InitDefMaker;
  184.  
  185. PROCEDURE InitInfoTab(name : ARRAY OF CHAR);
  186. BEGIN
  187.   IF (checked  IN MenuItemFeld[0].flags) THEN info.And:=TRUE          END;
  188.   IF (checked  IN MenuItemFeld[1].flags) THEN info.Tilde:=TRUE        END;
  189.   IF (checked  IN MenuItemFeld[2].flags) THEN info.Doppelkreuz:=TRUE  END;
  190.   IF (selected IN gadget[0].flags) THEN info.Speed:=TRUE        END;
  191.   IF (selected IN gadget[1].flags) THEN info.Head:=TRUE         END;
  192.   IF (selected IN gadget[2].flags) THEN info.Block:=TRUE        END;
  193.   IF (selected IN gadget[3].flags) THEN info.aussortieren:=TRUE END;
  194.   IF (selected IN gadget[4].flags) THEN info.defMod:=TRUE       END;
  195.   IF (selected IN gadget[5].flags) THEN info.backup:=TRUE       END;
  196.   IF (selected IN gadget[8].flags) THEN info.eineLeerzeile:=TRUE END;
  197.   IF MakeModule(name,ADR(info),window) THEN
  198.      PrintString(ADR("Operation erfolgreich beendet"),window,130,59,TRUE);
  199.   ELSE
  200.      PrintString(ADR("Fehler !!!"),window,130,59,TRUE);
  201.   END;
  202. END InitInfoTab;
  203.  
  204. PROCEDURE CleanDefMaker;
  205. BEGIN
  206.   IF (window # NIL) THEN CloseWindow(window) END;
  207. END CleanDefMaker;
  208.  
  209. PROCEDURE MakeDefinitionsModule(name : ARRAY OF CHAR);
  210. VAR bool : BOOLEAN;
  211. BEGIN
  212.   InitDefMaker;
  213.   IF (numargs = 0) THEN
  214.      PrintString(ADR("Bitte geben Sie einen Dateinamen ein:"),
  215.                       window,130,59,TRUE);
  216.      bool:=ActivateGadget(ADR(gadget[10]),window,NIL);
  217.   ELSE
  218.      PrintString(ADR("Dateiname:"),window,130,49,TRUE);
  219.   END;
  220.   LOOP
  221.     WaitPort(window^.userPort);
  222.       IntuiMsg:=GetMsg(window^.userPort);
  223.       class:=IntuiMsg^.class;
  224.       gadgetptr:=IntuiMsg^.iAddress;
  225.     ReplyMsg(IntuiMsg);
  226.     IF (closeWindow IN class) THEN
  227.        EXIT
  228.     ELSIF (gadgetUp IN class) THEN
  229.        CASE gadgetptr^.gadgetID OF
  230.          6 : InitInfoTab(programmname[0]); EXIT;
  231.        | 7 : EXIT;
  232.        ELSE
  233.        END;
  234.     END;
  235.   END;
  236. END MakeDefinitionsModule;
  237.  
  238. BEGIN
  239.    TermProcedure(CleanDefMaker);
  240.    numargs:=NumArgs();
  241.    GetArg(1,programmname[0],len);
  242.    MakeDefinitionsModule(programmname[0]);
  243.  
  244.    Terminate(0);
  245. END ModuleTool.
  246.